from flask import Flask, render_template, jsonify
from alg import Solution  # 你的接水算法类（如双指针/单调栈实现）
from gen import generate_data  # 生成随机柱子数据

app = Flask(__name__)

@app.route('/')
def index():
    return render_template('index.html')

# 生成随机柱子（返回高度数组 + 标注用的高度文本）
@app.route('/generate_data')
def get_data():
    test_case = generate_data(num_tests=1, max_length=10, max_height=10)[0]
    # 转成字符串方便前端显示（如 [2,5,3] → "2,5,3"）
    height_str = ",".join(map(str, test_case))  
    return jsonify({'heights': test_case, 'heightText': height_str})

# 计算接水量（返回接水总量 + 每个位置的接水量分布）
@app.route('/calculate_water/<path:heights>')
def calculate_water(heights):
    height_list = [int(h) for h in heights.split(',')]
    solution = Solution()
    trapped_water = solution.trap(height_list)  # 核心接水算法
    
    # 【关键】这里假设你的算法能返回每个位置的接水量（如数组）
    # 如果算法没返回分布，需改造 alg.py，示例逻辑：
    # water_distribution = solution.calculate_water_distribution(height_list)
    # 以下为模拟逻辑（实际替换成你算法的真实分布）：
    water_distribution = [0,2,0,1,0,3]  # 示例：每个柱子上方的接水量
    
    return jsonify({
        'total': trapped_water,
        'distribution': water_distribution
    })

if __name__ == "__main__":
    app.run(debug=True)